<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- app是父组件 -->
    <div id="app">
        <h1>父组件中的title的值{{title_str}}</h1>
        <!-- 子传子：通过属性 -->
        <!-- v-on:myeventname 
            v-on:update:title
            myeventname=update:title
        -->
        <!-- A.1通过父向子传值 title_str传给子组件 -->
        <!-- demo是子组件 -->
        <!-- <demo :title="title_str" v-on:update:title="handleTitle"></demo> -->

    <!-- B.1 定义sync作用的属性 -->
        <!-- <demo :title="title_str" v-on:update:title="title_str=$event"></demo> -->
        <demo :title.sync="title_str"></demo>

    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        Vue.component("demo",{
            // A.2 通过props接收到父组件传进来的值
            props:{
                title:String,// title的类型String
            },
            // A.3在子通过data将传进来的props进行转化
            data:function(){
                // B.2 传进来的title进行data的转换
                return {
                    title_str:this.title
                }
            },
            template:`
                <div>
                    <h1>demo子组件的内容</h1>
                    <h1>父组件传进来的title:{{title_str}}</h1>
                    <!-- A.4 通过事件改变传进来的title_str值 -->
                    <button @click="handleChangeTitle">改变title的值</button>
                </div>
            `,
            methods:{
                // A.5 具体执行改变title值 的函数
                handleChangeTitle:function(){
                    this.title_str="zzz";
                    // A.6 触发父组件 传进来的自定义事件
                    // B.3 触发sync修饰符中定义的update:title事件
                    this.$emit("update:title",this.title_str)
                }
            }
        })
        let vm=new Vue({
            el:"#app",
            data:{
                title_str:"hhh"
            },
            methods:{
                // A.7 执行父组件中的方法，同时将参数进行传入
                // handleTitle:function(msg){
                //     this.title_str=msg;
                // }
            }
            
        })







    </script>
</body>
</html>